# v1.1.0

# 功能测试

## trace log 支持 zipkin 

下载 [zipkin官网](https://zipkin.io/pages/quickstart.html)

zipkin 安装并且启动，这里直接采用docker运行
```bash
docker run -d -p 9411:9411 openzipkin/zipkin
```

server 启动
```bash
go run ${projectpath}/examples/codes/trace/zipkin/http/server.go
```

MOSN 启动
```bash
mosn start -c  ${projectpath}/examples/codes/trace/zipkin/http/mosn_config.yaml
```
mosn_config.yaml 文件内容如下：
```yaml
servers:
  - default_log_path: stdout
    routers:
      - router_config_name: server_router
        virtual_hosts:
          - name: serverHost
            domains:
              - '*'
            routers:
              - match:
                  prefix: /
                route:
                  cluster_name: serverCluster
    listeners:
      - name: serverListener
        address: '127.0.0.1:2046'
        bind_port: true
        filter_chains:
          - filters:
              - type: proxy
                config:
                  downstream_protocol: Http1
                  upstream_protocol: Http1
                  router_config_name: server_router
cluster_manager:
  clusters:
    - name: serverCluster
      type: SIMPLE
      lb_type: LB_RANDOM
      max_request_per_conn: 1024
      conn_buffer_limit_bytes: 32768
      hosts:
        - address: '127.0.0.1:8080'
tracing:
  enable: true
  driver: Zipkin
  config:
    service_name: MOSN
    reporter: http
    addresses:
      - "http://localhost:9411/api/v2/spans"
    http:
      timeout: 3
      batch_size: 1
      batch_interval: 1

admin:
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 34901
```


client 启动 / curl 请求
```bash
go run  ${projectpath}/examples/codes/trace/zipkin/http/client.go
```
查看输出为 ```response: hello world``` 表示请求成功

```bash
curl http://localhost:2046/hello
```
返回 ```hello world``` 表示 MOSN 转发成功

在网页中请求 ```http://127.0.0.1:9411``` 便能查看示例的请求日志追踪 


## 支持 tunnel 连接

生成 MOSN 二进制文件
```bash
cd ${projectpath}/examples/codes/tunnel-sample 

sh build.sh
```

启动 tunnel_agent
```bash
./mosn start -c agent_config.json
```

启动 tunnel_client
```bash
./mosn start -c client_config.json
```

启动 rpc server 
```bash
go run server.go
```

启动 rpc client
```bash
go run client.go

2022-08-12 18:02:36,155 [INFO] [network] [ register pool factory] register protocol: bolt factory
[Xprotocol RPC Client] Receive Data:stream: 1  status: 0
```

成功看到返回  tunnel_client 的返回
```bash
2022-08-12 18:04:42,760 [DEBUG] new idlechecker: maxIdleCount:6, conn:6
2022-08-12 18:04:42,760 [DEBUG] [server] [listener] accept connection from 127.0.0.1:2045, condId= 6, remote addr:127.0.0.1:50693
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [stream] [xprotocol] new stream detect, requestId = 1
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] new stream, proxyId = 3 , requestId =1, oneway=false
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] OnReceive headers:&{RequestHeader:{Protocol:1 CmdType:1 CmdCode:1 Version:1 RequestId:1 Codec:1 Timeout:-1 ClassLen:0 HeaderLen:43 ContentLen:0 Class: BytesHeader:{Kvs:[{Key:[115 101 114 118 105 99 101] Value:[116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45]}] Changed:false}} rawData:[1 1 0 1 1 0 0 0 1 1 255 255 255 255 0 0 0 43 0 0 0 0 0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawMeta:[1 1 0 1 1 0 0 0 1 1 255 255 255 255 0 0 0 43 0 0 0 0] rawClass:[] rawHeader:[0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawContent:[] Data:����+servicetestSofa-------------------- Content:<nil> ContentChanged:false}, data:<nil>, trailers:<nil>
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase InitPhase[0], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase DownFilter[1], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase MatchRoute[2], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [router] [routers] [MatchRoute] &{{1 1 1 1 1 1 -1 0 43 0  {[{[115 101 114 118 105 99 101] [116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45]}] false}} [1 1 0 1 1 0 0 0 1 1 255 255 255 255 0 0 0 43 0 0 0 0 0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] [1 1 0 1 1 0 0 0 1 1 255 255 255 255 0 0 0 43 0 0 0 0] [] [0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] [] ����+servicetestSofa-------------------- <nil> false}
2022-08-12 18:04:42,761 [DEBUG] [router] [routers] [findVirtualHost] found default virtual host only
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [router] [DefaultMakeHandler] [MatchRoute] matched a route: &{0xc0003158c0 [0xc000725380] .*}
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase DownFilterAfterRoute[3], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase ChooseHost[4], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] route match result:&{RouteRuleImplBase:0xc0003158c0 configHeaders:[0xc000725380] fastmatch:.*}, clusterName=clientCluster
2022-08-12 18:04:42,761 [DEBUG] [upstream] [cluster manager] clusterSnapshot.loadbalancer.ChooseHost result is 127.0.0.1:50678, cluster name = clientCluster
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] timeout info: {GlobalTimeout:-1ms TryTimeout:0s}
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase DownFilterAfterChooseHost[5], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [downstream] enter phase DownRecvHeader[6], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,-,-] [proxy] [upstream] append headers: &{RequestHeader:{Protocol:1 CmdType:1 CmdCode:1 Version:1 RequestId:1 Codec:1 Timeout:-1 ClassLen:0 HeaderLen:43 ContentLen:0 Class: BytesHeader:{Kvs:[{Key:[115 101 114 118 105 99 101] Value:[116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45]}] Changed:false}} rawData:[1 1 0 1 1 0 0 0 1 1 255 255 255 255 0 0 0 43 0 0 0 0 0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawMeta:[1 1 0 1 1 0 0 0 1 1 255 255 255 255 0 0 0 43 0 0 0 0] rawClass:[] rawHeader:[0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawContent:[] Data:����+servicetestSofa-------------------- Content:<nil> ContentChanged:false}
2022-08-12 18:04:42,761 [DEBUG] [6,3,-] [proxy] [upstream] connPool ready, proxyId = 3, host = 127.0.0.1:50678
2022-08-12 18:04:42,761 [DEBUG] [6,3,-] [stream] [xprotocol] appendHeaders, direction = 0, requestId = 3
2022-08-12 18:04:42,761 [DEBUG] [6,3,-] [stream] [xprotocol] connection 3 endStream, direction = 0, requestId = 3
2022-08-12 18:04:42,761 [DEBUG] update listener write bytes: 65
2022-08-12 18:04:42,761 [DEBUG] [6,3,-] [proxy] [downstream] enter phase WaitNotify[11], proxyId = 3  
2022-08-12 18:04:42,761 [DEBUG] [6,3,-] [proxy] [downstream] waitNotify begin 0xc00013e000, proxyId = 3
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [stream] [xprotocol] connection 3 receive response, requestId = 3
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [proxy] [upstream] OnReceive headers: &{ResponseHeader:{Protocol:1 CmdType:0 CmdCode:2 Version:1 RequestId:3 Codec:1 ResponseStatus:0 ClassLen:0 HeaderLen:0 ContentLen:0 Class: BytesHeader:{Kvs:[] Changed:false}} rawData:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawMeta:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawClass:[] rawHeader:[] rawContent:[] Data: Content:<nil> ContentChanged:false}, data: <nil>, trailers: <nil>
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [proxy] [downstream] OnReceive send downstream response &{ResponseHeader:{Protocol:1 CmdType:0 CmdCode:2 Version:1 RequestId:3 Codec:1 ResponseStatus:0 ClassLen:0 HeaderLen:0 ContentLen:0 Class: BytesHeader:{Kvs:[] Changed:false}} rawData:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawMeta:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawClass:[] rawHeader:[] rawContent:[] Data: Content:<nil> ContentChanged:false}
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [proxy] [downstream] enter phase UpFilter[12], proxyId = 3  
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [proxy] [downstream] enter phase UpRecvHeader[13], proxyId = 3  
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [stream] [xprotocol] appendHeaders, direction = 1, requestId = 1
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [stream] [xprotocol] connection 6 endStream, direction = 1, requestId = 1
2022-08-12 18:04:42,762 [DEBUG] update listener write bytes: 20
2022-08-12 18:04:42,762 [DEBUG] [6,3,-] [proxy] [downstream] giveStream 0xc00013e000 &{ID:3 proxy:0xc000476900 route:0xc000725350 cluster:0xc0001ecf00 element:<nil> bufferLimit:0 timeout:{GlobalTimeout:-1000000 TryTimeout:0} retryState:0xc00017c280 requestInfo:0xc00013e200 responseSender:0xc0006bc618 upstreamRequest:0xc00013e188 perRetryTimer:<nil> responseTimer:<nil> downstreamReqHeaders:0xc0006b2b40 downstreamReqDataBuf:<nil> downstreamReqTrailers:<nil> downstreamRespHeaders:0xc0006b2ff0 downstreamRespDataBuf:<nil> downstreamRespTrailers:<nil> upstreamResponseReceived:1 downstreamResponseStarted:true downstreamRecvDone:true upstreamRequestSent:true upstreamProcessDone:{_:[] v:{_:[] v:1}} directResponse:false oneway:false notify:0xc000325020 downstreamReset:0 downstreamCleaned:1 upstreamReset:0 reuseBuffer:1 resetReason:{_:[] v:{Value:{v:<nil>} _:[]}} streamFilterChain:{downStream:<nil> DefaultStreamFilterChainImpl:<nil>} receiverFiltersAgainPhase:0 context:0xc000317a40 tracks:0xc0000cce00 logDone:1 snapshot:0xc0003947e0 phase:13}
2022-08-12 18:04:42,963 [DEBUG] [network] [read loop] Error on read. Connection = 6, Local Address = 127.0.0.1:2045, Remote Address = 127.0.0.1:50693, err = EOF
2022-08-12 18:04:42,963 [DEBUG] [network] [close connection] Close TCP Conn, Remote Address is = 127.0.0.1:50693, eventType is = RemoteClose
2022-08-12 18:04:42,963 [DEBUG] [network] [close connection] Close connection 6, event RemoteClose, type NoFlush
2022-08-12 18:04:42,963 [DEBUG] [network] receive new connection event RemoteClose, try to handle

```

成功看到返回  tunnel_agent 的返回
```bash
8:04:40,762 [DEBUG] [network] [server idle checker] connection idle 2 times, maxIdleCount:6
2022-08-12 18:04:40,762 [DEBUG] [agent] receive OnReadTimeout event, ignore it
2022-08-12 18:04:42,761 [DEBUG] [2,-,-] [stream] [xprotocol] new stream detect, requestId = 3
2022-08-12 18:04:42,761 [DEBUG] [2,-,-] [proxy] [downstream] new stream, proxyId = 2 , requestId =3, oneway=false
2022-08-12 18:04:42,761 [DEBUG] [2,-,-] [proxy] [downstream] OnReceive headers:&{RequestHeader:{Protocol:1 CmdType:1 CmdCode:1 Version:1 RequestId:3 Codec:1 Timeout:-1 ClassLen:0 HeaderLen:43 ContentLen:0 Class: BytesHeader:{Kvs:[{Key:[115 101 114 118 105 99 101] Value:[116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45]}] Changed:false}} rawData:[1 1 0 1 1 0 0 0 3 1 255 255 255 255 0 0 0 43 0 0 0 0 0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawMeta:[1 1 0 1 1 0 0 0 3 1 255 255 255 255 0 0 0 43 0 0 0 0] rawClass:[] rawHeader:[0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawContent:[] Data:����+servicetestSofa-------------------- Content:<nil> ContentChanged:false}, data:<nil>, trailers:<nil>
2022-08-12 18:04:42,761 [DEBUG] [2,-,-] [proxy] [downstream] enter phase InitPhase[0], proxyId = 2  
2022-08-12 18:04:42,761 [DEBUG] [2,-,-] [proxy] [downstream] enter phase DownFilter[1], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] enter phase MatchRoute[2], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [router] [routers] [MatchRoute] &{{1 1 1 1 3 1 -1 0 43 0  {[{[115 101 114 118 105 99 101] [116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45]}] false}} [1 1 0 1 1 0 0 0 3 1 255 255 255 255 0 0 0 43 0 0 0 0 0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] [1 1 0 1 1 0 0 0 3 1 255 255 255 255 0 0 0 43 0 0 0 0] [] [0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] [] ����+servicetestSofa-------------------- <nil> false}
2022-08-12 18:04:42,762 [DEBUG] [router] [routers] [findVirtualHost] found default virtual host only
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [router] [DefaultMakeHandler] [MatchRoute] matched a route: &{0xc00048b080 [0xc000282450] .*}
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] enter phase DownFilterAfterRoute[3], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] enter phase ChooseHost[4], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] route match result:&{RouteRuleImplBase:0xc00048b080 configHeaders:[0xc000282450] fastmatch:.*}, clusterName=serverCluster
2022-08-12 18:04:42,762 [DEBUG] [upstream] [cluster manager] clusterSnapshot.loadbalancer.ChooseHost result is 127.0.0.1:8080, cluster name = serverCluster
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] timeout info: {GlobalTimeout:-1ms TryTimeout:0s}
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] enter phase DownFilterAfterChooseHost[5], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [downstream] enter phase DownRecvHeader[6], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,-,-] [proxy] [upstream] append headers: &{RequestHeader:{Protocol:1 CmdType:1 CmdCode:1 Version:1 RequestId:3 Codec:1 Timeout:-1 ClassLen:0 HeaderLen:43 ContentLen:0 Class: BytesHeader:{Kvs:[{Key:[115 101 114 118 105 99 101] Value:[116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45]}] Changed:false}} rawData:[1 1 0 1 1 0 0 0 3 1 255 255 255 255 0 0 0 43 0 0 0 0 0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawMeta:[1 1 0 1 1 0 0 0 3 1 255 255 255 255 0 0 0 43 0 0 0 0] rawClass:[] rawHeader:[0 0 0 7 115 101 114 118 105 99 101 0 0 0 28 116 101 115 116 83 111 102 97 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45] rawContent:[] Data:����+servicetestSofa-------------------- Content:<nil> ContentChanged:false}
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [upstream] connPool ready, proxyId = 2, host = 127.0.0.1:8080
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [stream] [xprotocol] appendHeaders, direction = 0, requestId = 3
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [stream] [xprotocol] connection 4 endStream, direction = 0, requestId = 3
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [downstream] enter phase WaitNotify[11], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [downstream] waitNotify begin 0xc00052e000, proxyId = 2
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [stream] [xprotocol] connection 4 receive response, requestId = 3
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [upstream] OnReceive headers: &{ResponseHeader:{Protocol:1 CmdType:0 CmdCode:2 Version:1 RequestId:3 Codec:1 ResponseStatus:0 ClassLen:0 HeaderLen:0 ContentLen:0 Class: BytesHeader:{Kvs:[] Changed:false}} rawData:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawMeta:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawClass:[] rawHeader:[] rawContent:[] Data: Content:<nil> ContentChanged:false}, data: <nil>, trailers: <nil>
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [downstream] OnReceive send downstream response &{ResponseHeader:{Protocol:1 CmdType:0 CmdCode:2 Version:1 RequestId:3 Codec:1 ResponseStatus:0 ClassLen:0 HeaderLen:0 ContentLen:0 Class: BytesHeader:{Kvs:[] Changed:false}} rawData:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawMeta:[1 0 0 2 1 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0] rawClass:[] rawHeader:[] rawContent:[] Data: Content:<nil> ContentChanged:false}
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [downstream] enter phase UpFilter[12], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [downstream] enter phase UpRecvHeader[13], proxyId = 2  
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [stream] [xprotocol] appendHeaders, direction = 1, requestId = 3
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [stream] [xprotocol] connection 2 endStream, direction = 1, requestId = 3
2022-08-12 18:04:42,762 [DEBUG] update listener write bytes: 20
2022-08-12 18:04:42,762 [DEBUG] [2,4,-] [proxy] [downstream] giveStream 0xc00052e000 &{ID:2 proxy:0xc000150400 route:0xc000245e30 cluster:0xc000142c80 element:<nil> bufferLimit:0 timeout:{GlobalTimeout:-1000000 TryTimeout:0} retryState:0xc000502140 requestInfo:0xc00052e200 responseSender:0xc00052c078 upstreamRequest:0xc00052e188 perRetryTimer:<nil> responseTimer:<nil> downstreamReqHeaders:0xc000512000 downstreamReqDataBuf:<nil> downstreamReqTrailers:<nil> downstreamRespHeaders:0xc0005122d0 downstreamRespDataBuf:<nil> downstreamRespTrailers:<nil> upstreamResponseReceived:1 downstreamResponseStarted:true downstreamRecvDone:true upstreamRequestSent:true upstreamProcessDone:{_:[] v:{_:[] v:1}} directResponse:false oneway:false notify:0xc000454120 downstreamReset:0 downstreamCleaned:1 upstreamReset:0 reuseBuffer:1 resetReason:{_:[] v:{Value:{v:<nil>} _:[]}} streamFilterChain:{downStream:<nil> DefaultStreamFilterChainImpl:<nil>} receiverFiltersAgainPhase:0 context:0xc00077a540 tracks:0xc000510000 logDone:1 snapshot:0xc0000d97d0 phase:13}
2022-08-12 18:04:55,762 [DEBUG] [network] [server idle checker] connection idle 3 times, maxIdleCount:6
2022-08-12 18:04:55,762 [DEBUG] [agent] receive OnReadTimeout event, ignore it
2022-08-12 18:04:57,762 [DEBUG] [network] [server idle checker] connection have read/write data before this read timeout: 65, 152, 20, 60
2022-08-12 18:04:57,762 [DEBUG] [agent] receive OnReadTimeout event, ignore it
2022-08-12 18:04:57,762 [DEBUG] client OnEvent OnReadTimeout, connected true
2022-08-12 18:04:57,762 [DEBUG] [-,-,-] [stream] [xprotocol] appendHeaders, direction = 0, requestId = 4
2022-08-12 18:04:57,762 [DEBUG] [-,-,-] [stream] [xprotocol] connection 4 endStream, direction = 0, requestId = 4
2022-08-12 18:04:57,762 [DEBUG] [stream] [xprotocol] [keepalive] connection 4 send a keepalive request, id = 4
2022-08-12 18:04:57,762 [DEBUG] [-,-,-] [stream] [xprotocol] connection 4 receive response, requestId = 4
2022-08-12 18:04:57,763 [DEBUG] [stream] [xprotocol] [keepalive] connection 4 receive a request success 4
2022-08-12 18:04:57,763 [DEBUG] update listener write bytes: 20
```


##  MakeFile 添加打包 MOSN 的 tar 命令

打包 MOSN，Istio 版本为 1.5.2 
```bash
make istio-1.5.2-tar 
```

打包 MOSN，Istio 版本为 1.10.6
```bash
make istio-1.10.6-tar
```



